// Book类（图书类）
var Book = /** @class */ (function () {
    function Book(title, author, category) {
        this.title = title;
        this._author = author;
        this.category = category;
    }
    Object.defineProperty(Book.prototype, "author", {
        // getter / setter 封装私有属性
        set: function (value) {
            this._author = value;
        },
        enumerable: false,
        configurable: true
    });
    // get author() {
    //     return this._author;
    // }
    // 公共方法：显示图书信息
    Book.prototype.getInfo = function () {
        console.log("\u4E66\u540D: ".concat(this.title, ", \u4F5C\u8005: ").concat(this._author, ", \u5206\u7C7B: ").concat(this.category));
    };
    return Book;
}());
var ts_book = new Book("《TypeScript入门》", "李四", "技术");
ts_book.author = "王五";
ts_book.getInfo();
// LibraryBook类（馆藏图书类，继承自Book类）
// class LibraryBook extends Book {
//     public isbn: string;      // 公共属性：ISBN
//     private _location: string; // 私有属性：存放位置
//
//     // 子类构造函数
//     constructor(
//         title: string,
//         author: string,
//         category: string,
//         isbn: string,
//         location: string
//     ) {
//         // 调用父类构造函数初始化父类成员
//         super(title, author, category);
//
//         // 初始化子类特有成员
//         this.isbn = isbn;
//         this._location = location;
//     }
//
//     // 重写父类方法（多态）
//     public override getInfo(): void {
//         console.log(
//             `书名: ${this.title}, 作者: ${this.author}, 分类: ${this.category}, ISBN: ${this.isbn}, 位置: ${this._location}`
//         );
//     }
//
//     // 借阅方法
//     public borrow(): void {
//         console.log(`图书《${this.title}》已被借阅，存放位置: ${this._location}`);
//     }
//
//     // 封装：通过方法访问私有属性 location
//     public getLocation(): string {
//         return this._location;
//     }
// }
//
// // ====================== 使用示例 ======================
// const book = new Book("TypeScript入门", "张三", "技术");
// book.getInfo(); // 输出：书名: TypeScript入门, 作者: 张三, 分类: 技术
//
// const libraryBook = new LibraryBook(
//     "JavaScript高级程序设计",
//     "Nicholas C. Zakas",
//     "技术",
//     "978-7-115-47059-9",
//     "A区3架"
// );
// libraryBook.getInfo();   // 输出重写后的信息
